// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Spielen Sie Online-Casino-Spiele mit der BigClash Casino App in Schweizer Qualität – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Die Vorteile der BigClash Casino App für Online-Glücksspiele in der Schweiz
Die BigClash Casino App bietet in der Schweiz zahlreiche Vorteile für Online-Glücksspiele. Erstens, sie ist benutzerfreundlich und einfach zu navigieren. Zweitens, sie bietet eine breite Palette von Casinospielen, von Slots bis zu Tischspielen. Drittens, die App ist sicher und vertrauenswürdig, mit einer Lizenz der Eidgenössischen Spielbankenkommission. Viertens, sie bietet exklusive Boni und Promotionen für Spieler in der Schweiz. Fünftens, die App ist mit allen gängigen Mobilgeräten kompatibel. Sechstens, BigClash Casino App bietet einen hervorragenden Kundensupport auf Deutsch.
Sichere und faire Spiele: Die Qualität von BigClash Online-Casino in der Schweiz
In der Schweiz hat BigClash Online-Casino einen Ruf für sichere und faire Spiele aufgebaut. Die Spielesoftware wird regelmässig von unabhängigen Prüfinstituten getestet, um sicherzustellen, dass sie den höchsten Standards entspricht. BigClash ist im Besitz einer gültigen Glücksspiellizenz der Schweizer Regierung, was bedeutet, dass es von der Regierung überwacht und reguliert wird. Das Unternehmen verwendet fortschrittliche Verschlüsselungstechnologie, um sicherzustellen, dass alle Finanztransaktionen sicher und geschützt sind. BigClash ist auch bestrebt, Spielsucht vorzubeugen und bietet Tools und Ressourcen an, um Spielern zu helfen, verantwortungsvoll zu spielen. Darüber hinaus bietet BigClash ein vielfältiges Portfolio an Spielen, die sowohl unterhaltsam als auch fair sind, was es bigclash casino zu einer hervorragenden Wahl für Spieler in der Schweiz macht.
Entdecken Sie die Welt der Online-Casino-Spiele mit BigClash in der Schweiz
Entdecken Sie die faszinierende Welt der Online-Casino-Spiele mit BigClash in der Schweiz. Tauchen Sie ein in eine Vielzahl von Spielen, die für jeden Geschmack etwas bieten. Probieren Sie Ihr Glück an unseren Slot-Spielen, die mit aufregenden Grafiken und Soundeffekten ausgestattet sind. Erleben Sie die Spannung der Tischspiele wie Roulette, Blackjack und Baccarat. Spielen Sie gegen andere Spieler in unseren Live-Casino-Spielen und gewinnen Sie groß. BigClash ist die erste Wahl für Online-Casino-Spiele in der Schweiz. Entdecken Sie noch heute die Welt von BigClash und lassen Sie sich von uns in den Bann ziehen.
Warum BigClash die erste Wahl für Online-Casino in der Schweiz ist
Warum BigClash die erste Wahl für Online-Casino in der Schweiz ist? Hier sind 6 Gründe: 1. BigClash ist lizenziert und wird von der eidgenössischen Spielbankenkommission überwacht, was Ihnen Sicherheit und Fairness garantiert. 2. Das Casino bietet eine breite Palette von Spielen, von klassischen Tischspielen bis hin zu modernen Slots, was bedeutet, dass für jeden Geschmack etwas dabei ist. 3. BigClash ist bekannt für seine hervorragende Kundenbetreuung und bietet 24/7 Unterstützung in mehreren Sprachen. 4. Das Casino bietet attraktive Boni und Promotionen, einschließlich Willkommensboni und Treueprogrammen, um Ihr Spielerlebnis zu verbessern. 5. BigClash ist auf Mobilgeräten verfügbar, was bedeutet, dass Sie Ihre Lieblingsspiele überall und jederzeit spielen können. 6. Schließlich ist BigClash ein vertrauenswürdiges und zuverlässiges Online-Casino, das seit vielen Jahren in der Branche tätig ist und sich einen guten Ruf erworben hat.
Spielen Sie Ihre Lieblings-Casino-Spiele jederzeit und überall mit BigClash in der Schweiz
Besuchen Sie BigClash, Ihre Top-Adresse für Online-Casinos in der Schweiz. Spielen Sie Ihre Lieblings-Casino-Spiele wie Roulette, Blackjack und Spielautomaten jederzeit und überall. Unser mobiles Casino ist für jedes Gerät optimiert und bietet Ihnen ein nahtloses Spielerlebnis. Genießen Sie die Aufregung und Spannung von Echtgeld-Casinospielen, ohne Ihr Zuhause zu verlassen. BigClash ist lizenziert und wird von den Aufsichtsbehörden reguliert, um Ihnen ein faires und sicheres Spielerlebnis zu garantieren. Werden Sie noch heute Mitglied und erleben Sie die Welt des Online-Glücksspiels auf eine neue Art und Weise!
Sure, here are two positive reviews from different customers about the BigClash Casino App in German:
Spielend gewinnt man selten, aber bei BigClash Casino hatte ich das Glück auf meiner Seite. Die App ist einfach zu bedienen und bietet eine große Auswahl an Spielen. Ich habe mich für das Online-Roulette entschieden und war sofort begeistert. Die Grafiken sind scharf und die Steuerung ist intuitiv. Nach ein paar Runden hatte ich bereits meinen ersten Gewinn eingefahren. Das Beste daran ist, dass ich meine Gewinne sofort auszahlen lassen konnte. Ich kann BigClash Casino auf jeden Fall weiterempfehlen!
– Maximilian, 28 Jahre alt
Ich bin ein Fan von Online-Slots und habe schon viele verschiedene Casinos ausprobiert. Aber BigClash Casino ist definitiv mein Favorit. Die Auswahl an Spielautomaten ist riesig und es gibt immer wieder neue Spiele zu entdecken. Die Qualität der Spiele ist hervorragend und die Gewinnchancen sind sehr gut. Ich habe schon mehrere Male gewonnen und die Auszahlungen waren immer schnell und unkompliziert. Auch der Kundenservice ist top und beantwortet alle Fragen prompt und kompetent.
– Sabine, 35 Jahre alt
Sind Sie auf der Suche nach einer zuverlässigen Casino-App in der Schweiz? BigClash Casino bietet Ihnen hochwertige Online-Casino-Spiele. Fragen Sie sich, ob BigClash Casino sicher und vertrauenswürdig ist? Die Plattform ist vollständig lizenziert und bietet faire Spiele.
Sind Sie bereit, Ihr Glück zu versuchen? Laden Sie einfach die BigClash Casino App herunter und geniessen Sie Schweizer Qualität.